package tree;

/**
 * @author : Rookie
 * @description : 左叶子之和
 * @date : 2023/10/14
 */
public class LeftLeafSum {

    public static void main(String[] args) {
        int[] input = {3, 9, 20, -1, -1, 15, 7};
        TreeNode root = BinaryTreeUtil.buildTree(input);
        System.out.println(getLeftLeafSum(root));
    }

    /**
     * 遍历的时候，需要从父节点判断当前的节点是否是左孩子
     * @param node
     * @return
     */
    public static int getLeftLeafSum(TreeNode node) {
        if (node == null) {
            return 0;
        }
        // 叶子节点
        if (node.left == null && node.right == null) {
            return 0;
        }
        // 左
        int leftLeafVal = getLeftLeafSum(node.left);
        // 当前节点的左孩子的左孩子是叶子节点
        if (node.left != null && node.left.left == null && node.left.right == null) {
            leftLeafVal = node.left.element;
        }
        // 右
        int rightLeafVal = getLeftLeafSum(node.right);
        // 中
        return leftLeafVal + rightLeafVal;
    }
}
